<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class  System
{
    public static function  currentTimeMillis()
    {

        list($usec,  $sec)  =  explode(" ",microtime());
        return  $sec.substr($usec,  2,  3);
    }
}
class  NetAddress
{
    var  $Name  =  'localhost';
    var  $IP  =  '127.0.0.1';

   public static function  getLocalHost()  //  static
    {
        $address  =  new  NetAddress();
        $address->Name  =  $_SERVER["SERVER_NAME"];
        $address->IP  =  $_SERVER["SERVER_ADDR"];
       
        p($address);
        return  $address;
    }
   public function  toString()
    {
        return  strtolower($this->Name.'/'.$this->IP);
    }
}
class  Random
{
    public static function  nextLong()
    {
        $tmp  =  rand(0,1)?'-':'';
        return  $tmp.rand(1000,  9999).rand(1000,  9999).rand(1000,  9999).rand(100,  999).rand(100,  999);
    }
}

class  Guid
{
    var  $valueBeforeMD5;
    var  $valueAfterMD5;
    public function  __construct()
    {
        $this->getGuid();
    }
    //
    public function  getGuid()
    {

        $address  =  NetAddress::getLocalHost();

        $this->valueBeforeMD5  =  $address->toString().':'.System::currentTimeMillis().':'.Random::nextLong();
        $this->valueAfterMD5  =  md5($this->valueBeforeMD5);
    }
    public function  newGuid()
    {
        $Guid  =  new  Guid();
        return  $Guid;
    }
    public function  toString()
    {

        $raw  =  strtoupper($this->valueAfterMD5);
        return  substr($raw,0,8).substr($raw,8,4).substr($raw,12,4).substr($raw,16,4).substr($raw,20);
    }
}
?>